﻿namespace PropertyExpression.ControllableQuery.Test.Queries
{
    public partial class ModelPublicationSearch : IQuery<IModelPublicationInfo>
    {
        private readonly IOptionalValueSwitcher<ModelCodeParam> modelCodeSwitcher;
        private readonly IOptionalValueSwitcher<ModelSequenceParam> modelPublicationSwitcher;
        private readonly IOptionalValueSwitcher<PublicationCodeParam> publicationCodeSwitcher;

        public ModelPublicationSearch(
            IOptionalValueSwitcher<ModelCodeParam> modelCodeSwitcher,
            IOptionalValueSwitcher<ModelSequenceParam> modelPublicationSwitcher,
            IOptionalValueSwitcher<PublicationCodeParam> publicationCodeSwitcher)
        {
            this.modelCodeSwitcher = modelCodeSwitcher;
            this.modelPublicationSwitcher = modelPublicationSwitcher;
            this.publicationCodeSwitcher = publicationCodeSwitcher;
        }
    }

    public interface IModelPublicationInfo
    {
    }

    public class ModelCodeParam
    {
        public readonly string ModelCode;

        public ModelCodeParam(string modelCode)
        {
            ModelCode = modelCode;
        }
    }

    public class ModelSequenceParam
    {
        public readonly string ModelSequence;

        public ModelSequenceParam(string modelSequence)
        {
            ModelSequence = modelSequence;
        }
    }

    public class PublicationCodeParam
    {
        public readonly string PublicationCode;

        public PublicationCodeParam(string publicationCode)
        {
            PublicationCode = publicationCode;
        }
    }
}
